package ar.republicagroup.gestion.dao.jpa;

import ar.republicagroup.gestion.dao.ChequePenalizacionDAO;
import ar.republicagroup.gestion.entities.ChequeEstado;
import ar.republicagroup.gestion.entities.ChequePenalizacion;
import ar.republicagroup.gestion.util.JPAUtil;
import ar.republicagroup.gestion.util.messages.UIMessages;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.Query;
import javax.swing.DefaultComboBoxModel;
import org.apache.log4j.Logger;

/**
 *
 * @author DIEGOALV
 */
public class ChequePenalizacionDAOImplJPA implements ChequePenalizacionDAO{
    
     private static Logger log = Logger.getLogger(ChequeDAOImplJPA.class);
     private EntityManager em;

    public ChequePenalizacionDAOImplJPA() {
        em = JPAUtil.getEntityManager();
    }
     
     
    

    @Override
    public ChequePenalizacion getChequePenalizacionByChequeEstado(ChequeEstado chequeEstado) {
        
        if(!em.isOpen()){
                em = JPAUtil.getEntityManager();
            }
        
        try{
                Query query = em.createQuery("SELECT cp FROM ChequePenalizacion cp WHERE cp.chequeEstadoId.id = ?1");
                query.setParameter(1, chequeEstado.getId());
                return(ChequePenalizacion)query.getSingleResult();
            }catch(NoResultException ex){
                return null;
            }
       
    }

    @Override
    public DefaultComboBoxModel combo() {
            if(!em.isOpen()){
                em = JPAUtil.getEntityManager();
            }
            DefaultComboBoxModel model  = new DefaultComboBoxModel();
        
            try{
            Query query = em.createQuery("SELECT cp FROM ChequePenalizacion cp WHERE cp.estado = 1");
            List<ChequePenalizacion> chequePenalizacionList = query.getResultList();
            model.addElement("Seleccione");
            model.setSelectedItem("Seleccione");
            for(ChequePenalizacion estado : chequePenalizacionList){
                model.addElement(estado);
            }
            
            }catch(Exception ex){
                log.info("Error al cargar combo de ChequePenalizacion");
                log.error(ex.getMessage());
            }
        
            return model;
     }
    
    @Override
    public String update(ChequePenalizacion estado){
            String mensaje = null;
        
            if(!em.isOpen()){
                em = JPAUtil.getEntityManager();
            }
          
            try{ 
                em.getTransaction().begin();
                em.merge(estado);
                em.getTransaction().commit(); 
                mensaje = UIMessages.getInfoMessage("onCompleteUpdate");
            }catch(Exception ex){
                log.info("Error al actualizar ChequePenalizacion");
                log.error(ex.getMessage());
                em.getTransaction().rollback();
            }
                
            return mensaje;
    
    }
    
    
    
    
    
}
